--- a/options.c
+++ b/options.c
@@ -34,6 +34,8 @@
 
 /* System libraries. */
 
+#include <unistd.h>
+#include <stdlib.h>
 #include <sys/types.h>
 #include <sys/param.h>
 #include <sys/socket.h>
--- a/safe_finger.c
+++ b/safe_finger.c
@@ -20,6 +20,11 @@
 
 /* System libraries */
 
+#include <unistd.h>
+#include <fcntl.h>
+#include <stdlib.h>
+#include <sys/wait.h>
+#include <grp.h>
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <signal.h>
@@ -27,7 +31,7 @@
 #include <ctype.h>
 #include <pwd.h>
 
-extern void exit();
+int pipe_stdin(char **argv);
 
 /* Local stuff */
 
--- a/scaffold.c
+++ b/scaffold.c
@@ -10,6 +10,7 @@
 
 /* System libraries. */
 
+#include <stdlib.h>
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <sys/socket.h>
@@ -27,7 +27,4 @@
 #endif
 
-#ifndef INET6
-extern char *malloc();
-#endif
 
 /* Application-specific. */
--- a/shell_cmd.c
+++ b/shell_cmd.c
@@ -14,6 +14,10 @@
 
 /* System libraries. */
 
+#include <unistd.h>
+#include <stdlib.h>
+#include <fcntl.h>
+#include <sys/wait.h>
 #include <sys/types.h>
 #include <sys/param.h>
 #include <signal.h>
@@ -25,8 +25,6 @@
 #include <syslog.h>
 #include <string.h>
 
-extern void exit();
-
 /* Local stuff. */
 
 #include "tcpd.h"
--- a/tcpdchk.c
+++ b/tcpdchk.c
@@ -20,6 +20,8 @@
 
 /* System libraries. */
 
+#include <unistd.h>
+#include <stdlib.h>
 #include <sys/types.h>
 #include <sys/stat.h>
 #ifdef INET6
@@ -35,10 +36,7 @@
 #include <netdb.h>
 #include <string.h>
 
-extern int errno;
-extern void exit();
-extern int optind;
-extern char *optarg;
+int cidr_mask_addr(char *str);
 
 #ifndef INADDR_NONE
 #define INADDR_NONE     (-1)		/* XXX should be 0xffffffff */
--- a/clean_exit.c
+++ b/clean_exit.c
@@ -13,8 +13,8 @@
 #endif
 
 #include <stdio.h>
-
-extern void exit();
+#include <unistd.h>
+#include <stdlib.h>
 
 #include "tcpd.h"
 
--- a/hosts_access.c
+++ b/hosts_access.c
@@ -23,6 +23,7 @@
 
 /* System libraries. */
 
+#include <stdlib.h>
 #include <sys/types.h>
 #ifdef INT32_T
     typedef uint32_t u_int32_t;
@@ -43,8 +44,8 @@
 #include <netdb.h>
 #endif
 
-extern char *fgets();
-extern int errno;
+static int match_pattern_ylo(const char *s, const char *pattern);
+int cidr_mask_addr(char *str);
 
 #ifndef	INADDR_NONE
 #define	INADDR_NONE	(-1)		/* XXX should be 0xffffffff */
--- a/inetcf.c
+++ b/inetcf.c
@@ -9,15 +9,14 @@
 static char sccsid[] = "@(#) inetcf.c 1.7 97/02/12 02:13:23";
 #endif
 
+#include <stdlib.h>
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <stdio.h>
 #include <errno.h>
 #include <string.h>
 
-extern int errno;
-extern void exit();
-
+#include "scaffold.h"
 #include "tcpd.h"
 #include "inetcf.h"
 
--- a/percent_x.c
+++ b/percent_x.c
@@ -16,12 +16,12 @@
 
 /* System libraries. */
 
+#include <unistd.h>
+#include <stdlib.h>
 #include <stdio.h>
 #include <syslog.h>
 #include <string.h>
 
-extern void exit();
-
 /* Local stuff. */
 
 #include "tcpd.h"
--- a/rfc931.c
+++ b/rfc931.c
@@ -15,6 +15,7 @@
 
 /* System libraries. */
 
+#include <unistd.h>
 #include <stdio.h>
 #include <syslog.h>
 #include <sys/types.h>
--- a/tcpd.c
+++ b/tcpd.c
@@ -16,6 +16,7 @@
 
 /* System libraries. */
 
+#include <unistd.h>
 #include <sys/types.h>
 #include <sys/param.h>
 #include <sys/stat.h>
@@ -39,6 +39,8 @@
 #include "patchlevel.h"
 #include "tcpd.h"
 
+void fix_options(struct request_info *request);
+
 int     allow_severity = SEVERITY;	/* run-time adjustable */
 int     deny_severity = LOG_WARNING;	/* ditto */
 
--- a/tcpdmatch.c
+++ b/tcpdmatch.c
@@ -19,6 +19,8 @@
 
 /* System libraries. */
 
+#include <unistd.h>
+#include <stdlib.h>
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <sys/socket.h>
@@ -30,9 +32,6 @@
 #include <setjmp.h>
 #include <string.h>
 
-extern void exit();
-extern int optind;
-extern char *optarg;
 
 #ifndef	INADDR_NONE
 #define	INADDR_NONE	(-1)		/* XXX should be 0xffffffff */
--- a/update.c
+++ b/update.c
@@ -19,6 +19,7 @@
 
 /* System libraries */
 
+#include <unistd.h>
 #include <stdio.h>
 #include <syslog.h>
 #include <string.h>
--- a/misc.c
+++ b/misc.c
@@ -14,11 +14,10 @@
 #include <arpa/inet.h>
 #include <stdio.h>
 #include <string.h>
+#include <stdlib.h>
 
 #include "tcpd.h"
 
-extern char *fgets();
-
 #ifndef	INADDR_NONE
 #define	INADDR_NONE	(-1)		/* XXX should be 0xffffffff */
 #endif
--- a/fix_options.c
+++ b/fix_options.c
@@ -32,6 +32,7 @@
 
 /* fix_options - get rid of IP-level socket options */
 
+void
 fix_options(request)
 struct request_info *request;
 {
@@ -38,11 +38,8 @@
 #ifdef IP_OPTIONS
     unsigned char optbuf[BUFFER_SIZE / 3], *cp;
     char    lbuf[BUFFER_SIZE], *lp;
-#ifdef __GLIBC__
-    size_t  optsize = sizeof(optbuf), ipproto;
-#else
-    int     optsize = sizeof(optbuf), ipproto;
-#endif
+    socklen_t optsize = sizeof(optbuf);
+    int ipproto;
     struct protoent *ip;
     int     fd = request->fd;
     unsigned int opt;
--- a/socket.c
+++ b/socket.c
@@ -95,11 +95,7 @@
     static struct sockaddr_in client;
     static struct sockaddr_in server;
 #endif
-#ifdef __GLIBC__
-    size_t  len;
-#else
-    int     len;
-#endif
+    socklen_t len;
     char    buf[BUFSIZ];
     int     fd = request->fd;
 
@@ -430,11 +426,7 @@
 #else
     struct sockaddr_in sin;
 #endif
-#ifdef __GLIBC__
-    size_t  size = sizeof(sin);
-#else
-    int     size = sizeof(sin);
-#endif
+    socklen_t size;
 
     /*
      * Eat up the not-yet received datagram. Some systems insist on a
